import java.util.Arrays;

public class MyArraylist2 {
    public int[] array;
    public int Usedsize;
    public MyArraylist2() {              //构造函数 new对象时自动初始化数组大小
        this.array = new int[10];
    }
    public void display(){
        for (int i = 0;i < Usedsize;i++) {
            System.out.print(array[i]+" ");
        }
        System.out.println();
    }
    public void add(int pos, int data) {
        if(pos < 0 || pos > Usedsize) {                    //检验下标合不合法
            System.out.println("元素插入的下标不合法");
            return;
        }
        if(isFull(this.array)) {                          //检验是否满了
            this.array = Arrays.copyOf(array,array.length*2);
        }
        for (int i = Usedsize-1;i >= pos;i--) {
            array[i+1] = array[i];
        }
        array[pos] = data;
        Usedsize++;
    }

    public void del(int tomove) {
        if(isEmpty()) {
            System.out.println("线性表为空");
            return;
        }
        int index = search(tomove);
        if(index == -1) {
            System.out.println("没有该值，删除失败");
            return;
        }
        for (int i =index;i < Usedsize-1;i++) {
            array[i] = array[i+1];
        }
        Usedsize--;
    }
    public void update(int pos,int data) {
        if(pos < 0 || pos >= Usedsize) {                    //检验下标合不合法
            System.out.println("输入的下标不合法");
            return;
        }
        if(isEmpty()) {
            System.out.println("线性表为空");
        }
        array[pos] = data;
        return;
    }
    //判定是否包含某个元素
    public boolean contains(int toFind) {
        for (int i = 0;i < Usedsize;i++) {
            if(array[i] == toFind) {
                return true;
            }
        }
        return false;
    }
    //查找某个元素对应的位置  找不到返回-1
    public  int search(int toFind) {
        for (int i = 0;i < Usedsize;i++) {
            if(array[i] == toFind) {
                return i;
            }
        }
        return -1;
    }
    //获取pos 位置的值
    public int getPos(int pos) {
        if(pos < 0 || pos >= Usedsize) {                    //检验下标合不合法
            System.out.println("输入的下标不合法");
            return -1;
        }
        if(isEmpty()) {
            System.out.println("线性表为空");
            return -1;
        }
        return this.array[pos];
    }
    //判断线性表是否为空
    public boolean isEmpty() {
        return this.Usedsize == 0;
    }
    //清空线性表
    public void claer() {
        this.Usedsize = 0;
        System.out.println("已经清空");
    }
    // 判断数组是否满了
    public boolean isFull(int[] array) {
        if(this.Usedsize == this.array.length) {
            return true;
        }
        return false;
    }
    public void add(int data) {
        if(isFull(array)) {
            this.array = Arrays.copyOf(array,array.length*2);
        }
        if(isFull(this.array)) {
            this.array = Arrays.copyOf(this.array,array.length*2);
        }
        array[Usedsize] = data;
        Usedsize++;
    }


}
